#include<iostream>
using namespace std;

/*
给定一个含有n个正整数的数组和一个正整数s，找出该数组中满足其和≥s的长度最小的连续子数组，
并返回其长度。如果不存在符合条件的子数组，返回0。

输入：s=7, nums=[2,3,1,2,4,3] 
输出：2 
解释：子数组[4,3]是该条件下的长度最小的子数组。
*/

int findTarget(int*array,int len,int s){
    int i=0;
    int j=0;
    int sum=0;
    int lPosition=0,rPosition=0;
    int lenSerial=0;
    for(;j<len;j++){
        sum+=array[j];
        while(sum>=s){
            int lenTemp=j-i+1;
            if(lenSerial==0){
                lenSerial=lenTemp;
            }
            else if(lenTemp<lenSerial){
                lenSerial=lenTemp;
            }
            sum-=array[i++];
        }
    }
    
    if(lenSerial>0){
        lPosition=i-1;
        rPosition=j-1;
        for(int m=lPosition;m<=rPosition;m++){
            cout<<array[m]<<" ";
        }
        cout<<endl;
        return lenSerial;
    }
    else 
        return 0;
}

int main(){
    int array[6]={2,3,1,2,4,3};
    cout<<findTarget(array,6,7);
    return 0;
}